<!DOCTYPE html>


<html lang="en">
  

    <head>
      <meta charset="utf-8" />
        
      <meta name="description" content="時光的个人博客" />
      
      <meta
        name="viewport"
        content="width=device-width, initial-scale=1, maximum-scale=1"
      />
	  <meta name="referrer" content="no-referrer" />

      <title> 時光</title>
  <meta name="generator" content="hexo-theme-ayer">
      
      <link rel="shortcut icon" href="/favicon.ico" />
       
<link rel="stylesheet" href="/dist/main.css">

      
<link rel="stylesheet" href="/css/fonts/remixicon.css">

      
<link rel="stylesheet" href="/css/custom.css">
 
      <script src="https://cdn.staticfile.org/pace/1.2.4/pace.min.js"></script>
       
 

      <link
        rel="stylesheet"
        href="https://cdn.jsdelivr.net/npm/@sweetalert2/theme-bulma@5.0.1/bulma.min.css"
      />
      <script src="https://cdn.jsdelivr.net/npm/sweetalert2@11.0.19/dist/sweetalert2.min.js"></script>

      <!-- mermaid -->
      
      <style>
        .swal2-styled.swal2-confirm {
          font-size: 1.6rem;
        }
      </style>
    <link rel="alternate" href="/atom.xml" title="時光" type="application/atom+xml">
</head>
  </html>
</html>


<body>
  <div id="app">
    
      
    <main class="content on">
      
<section class="cover">
    
      
      <a class="forkMe" href="https://github.com/Shen-Yu/hexo-theme-ayer"
        target="_blank"><img width="149" height="149" src="/images/forkme.png"
          class="attachment-full size-full" alt="Fork me on GitHub" data-recalc-dims="1"></a>
    
  <div class="cover-frame">
    <div class="bg-box">
      <img src="/images/cover1.jpg" alt="image frame" />
    </div>
    <div class="cover-inner text-center text-white">
      <h1><a href="/">時光</a></h1>
      <div id="subtitle-box">
        
        <span id="subtitle"></span>
        
      </div>
      <div>
        
      </div>
    </div>
  </div>
  <div class="cover-learn-more">
    <a href="javascript:void(0)" class="anchor"><i class="ri-arrow-down-line"></i></a>
  </div>
</section>



<script src="https://cdn.staticfile.org/typed.js/2.0.12/typed.min.js"></script>


<!-- Subtitle -->

  <script>
    try {
      var typed = new Typed("#subtitle", {
        strings: ['面朝大海，春暖花开', '愿你一生努力，一生被爱', '想要的都拥有，得不到的都释怀'],
        startDelay: 0,
        typeSpeed: 200,
        loop: true,
        backSpeed: 100,
        showCursor: true
      });
    } catch (err) {
      console.log(err)
    }
  </script>
  
<div id="main">
  <section class="outer">
  
  
  

<div class="notice" style="margin-top:50px">
    <i class="ri-heart-fill"></i>
    <div class="notice-content" id="broad"></div>
</div>
<script type="text/javascript">
    fetch('https://v1.hitokoto.cn')
        .then(response => response.json())
        .then(data => {
            document.getElementById("broad").innerHTML = data.hitokoto;
        })
        .catch(console.error)
</script>

<style>
    .notice {
        padding: 20px;
        border: 1px dashed #e6e6e6;
        color: #969696;
        position: relative;
        display: inline-block;
        width: 100%;
        background: #fbfbfb50;
        border-radius: 10px;
    }

    .notice i {
        float: left;
        color: #999;
        font-size: 16px;
        padding-right: 10px;
        vertical-align: middle;
        margin-top: -2px;
    }

    .notice-content {
        display: initial;
        vertical-align: middle;
    }
</style>
  
  <article class="articles">
    
    
    
    
    <article
  id="post-Docker概述"
  class="article article-type-post"
  itemscope
  itemprop="blogPost"
  data-scroll-reveal
>
  <div class="article-inner">
    
    <header class="article-header">
       
<h2 itemprop="name">
  <a class="article-title" href="/2023/11/07/Docker%E6%A6%82%E8%BF%B0/"
    >Docker简介</a> 
</h2>
 

      
    </header>
     
    <div class="article-meta">
      <a href="/2023/11/07/Docker%E6%A6%82%E8%BF%B0/" class="article-date">
  <time datetime="2023-11-07T14:28:49.051Z" itemprop="datePublished">2023-11-07</time>
</a> 
  <div class="article-category">
    <a class="article-category-link" href="/categories/%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/">学习笔记</a>
  </div>
   
    </div>
      
    <div class="article-entry" itemprop="articleBody">
       
  <h1 id="Docker简介"><a href="#Docker简介" class="headerlink" title="Docker简介"></a>Docker简介</h1><p>Docker是基于Go语言实现的云开源项目。</p>
<p>Docker的主要目标是：Build, Ship and Run Any App, Anywhere，也就是通过对应用组件的封装、分发、部署、运行等生命周期的管理，使用户的APP及其运行环境能做到一次镜像,处处运行。</p>
<h1 id="传统虚拟机和容器"><a href="#传统虚拟机和容器" class="headerlink" title="传统虚拟机和容器"></a>传统虚拟机和容器</h1><p>传统虚拟机（virtual machine）：</p>
<p>传统虚拟机技术基于安装在主操作系统上的虚拟机管理系统（如VirtualBox、VMware等），创建虚拟机（虚拟出各种硬件），在虚拟机上安装从操作系统，在从操作系统中安装部署各种应用。</p>
<p>缺点：资源占用多、冗余步骤多、启动慢</p>
<p>Linux容器（Linux Container，简称LXC）：</p>
<p>Linux容器是与系统其他部分分隔开的一系列进程，从另一个镜像运行，并由该镜像提供支持进程所需的全部文件。容器提供的镜像包含了应用的所有依赖项，因而在从开发到测试再到生产的整个过程中，它都具有可移植性和一致性。</p>
<p>Linux容器不是模拟一个完整的操作系统，而是对进程进行隔离。有了容器，就可以将软件运行所需的所有资源打包到一个隔离的容器中。容器与虚拟机不同，不需要捆绑一整套操作系统，只需要软件工作所需的库资源和设置。系统因此而变得高效轻量并保证部署在任何环境中的软件都能始终如一的运行。</p>
<p><img src="https://img2023.cnblogs.com/blog/2233039/202311/2233039-20231107223123022-585346617.png" alt="image-20231107223128089"></p>
<p>对比：</p>
<table>
<thead>
<tr>
<th>特性</th>
<th>容器</th>
<th>虚拟机</th>
</tr>
</thead>
<tbody><tr>
<td>启动</td>
<td>秒级</td>
<td>分钟级</td>
</tr>
<tr>
<td>大小</td>
<td>一般为Mb</td>
<td>一般为Gb</td>
</tr>
<tr>
<td>速度</td>
<td>接近原生</td>
<td>比较慢</td>
</tr>
<tr>
<td>系统支持数量</td>
<td>单机支持上千个容器</td>
<td>一般几十个</td>
</tr>
</tbody></table>
<p> Docker运行速度快的原因 </p>
<p>Docker有比虚拟机更少的抽象层：</p>
<p>由于Docker不需要Hypervisor（虚拟机）实现硬件资源虚拟化，运行在Docker容器上的程序直接使用的都是实际物理机的硬件资源，因此在CPU、内存利用率上docker有明显优势。</p>
<p>Docker利用的是宿主机的内核，而不需要加载操作系统OS内核：</p>
<p>当新建一个容器时，Docker不需要和虚拟机一样重新加载一个操作系统内核。进而避免引寻、加载操作系统内核返回等比较耗时耗资源的过程。当新建一个虚拟机时，虚拟机软件需要加载OS，返回新建过程是分钟级别的。而Docker由于直接利用宿主机的操作系统，则省略了返回过程，因此新建一个docker容器只需要几秒钟。</p>
<p>Docker容器的本质就是一个进程。</p>
<p> Docker软件 </p>
<p>Docker并非一个通用的容器工具，它依赖于已经存在并运行的Linux内核环境。（在Windows上安装Docker时需要依赖WLS，也即Windows下的Linux子系统）。</p>
<p>Docker实质上是在已经运行的Linux下制造了一个隔离的文件环境，因此它执行的效率几乎等同于所部署的Linux主机。</p>
<p>Docker的基本组成部分：</p>
<p>●镜像（image）</p>
<p>●容器（container）</p>
<p>●仓库（repository）</p>
<p> Docker镜像 </p>
<p>Docker镜像就是一个只读的模板。镜像可以用来创建Docker容器，一个镜像可以创建多个容器。</p>
<p> Docker容器 </p>
<p>Docker利用容器独立运行的一个或一组应用，应用程序或服务运行在容器里面，容器就类似于一个虚拟化的运行环境，容器是用镜像创建的运行实例。</p>
<p> Docker仓库 </p>
<p>Docker仓库是集中存放镜像文件的场所。</p>
<p>仓库分为公开仓库和私有仓库两种。</p>
<p>最大的公开仓库是Docker官方的Docker Hub：<a target="_blank" rel="noopener" href="https://hub.docker.com/">https://hub.docker.com/</a></p>
<p> Docker架构 </p>
<p>Docker是一个 C&#x2F;S（Client-Server） 结构的系统，后端是一个松耦合架构，众多模块各司其职。</p>
<p>Docker守护进程运行在主机上，然后通过Socket连接从客户端访问，守护进程从容器接收命令并管理运行在主机上的容器。</p>
<p><img src="https://cdn.nlark.com/yuque/0/2022/svg/12911942/1652093339897-20255a0a-e981-43e3-9e9e-654b8da3b2c8.svg" alt="architecture.svg"></p>
<p>Docker运行的基本流程为：</p>
<p>1用户是使用Docker Client 与 Docker Daemon 建立通信，并发送请求给后者</p>
<p>2Docker Daemon 作为 Docker 架构的主体部分，首先提供 Docker Server 的功能使其可以接收 Docker Client 的请求</p>
<p>3Docker Engine 执行 Docker 内部的一系列工作，每一项工作都是以一个 Job 的形式存在</p>
<p>4Job 的运行过程中，当需要容器镜像时，则从 Docker Registry 中下载镜像，并通过镜像管理驱动 Graph Driver 将下载镜像以 Graph 的形式存储</p>
<p>5当需要为 Docker 创建网络环境时，通过网络管理驱动 Network driver 创建并配置 Docker 容器网络环境</p>
<p>6当需要限制 Docker 容器运行资源或执行用户指令等操作时，则通过 Exec driver 来完成</p>
<p>7Libcontainer 是一项独立的容器管理包，Network driver 以及 Exec driver 都是通过 Libcontainer 来实现具体对容器进行的操作</p>
<p><img src="https://cdn.nlark.com/yuque/0/2022/png/12911942/1652093347909-4fcf65d1-da12-47cb-9a2f-0c4528d7e4c9.png?x-oss-process=image/resize,w_750,limit_0" alt="flow.png"></p>
 
      <!-- reward -->
      
    </div>
    

    <!-- copyright -->
    
    <footer class="article-footer">
       
  <ul class="article-tag-list" itemprop="keywords"><li class="article-tag-list-item"><a class="article-tag-list-link" href="/tags/Docker/" rel="tag">Docker</a></li></ul>

    </footer>
  </div>

    
 
   
  
</article>

    
    <article
  id="post-Windows环境安装PostgreSQL"
  class="article article-type-post"
  itemscope
  itemprop="blogPost"
  data-scroll-reveal
>
  <div class="article-inner">
    
    <header class="article-header">
       
<h2 itemprop="name">
  <a class="article-title" href="/2023/08/18/Windows%E7%8E%AF%E5%A2%83%E5%AE%89%E8%A3%85PostgreSQL/"
    >Windows环境安装PostgreSQL</a> 
</h2>
 

      
    </header>
     
    <div class="article-meta">
      <a href="/2023/08/18/Windows%E7%8E%AF%E5%A2%83%E5%AE%89%E8%A3%85PostgreSQL/" class="article-date">
  <time datetime="2023-08-18T09:48:54.098Z" itemprop="datePublished">2023-08-18</time>
</a> 
  <div class="article-category">
    <a class="article-category-link" href="/categories/%E5%AE%89%E8%A3%85%E6%95%99%E7%A8%8B/">安装教程</a>
  </div>
   
    </div>
      
    <div class="article-entry" itemprop="articleBody">
       
  <h1 id="Windows环境安装PostgreSQL"><a href="#Windows环境安装PostgreSQL" class="headerlink" title="Windows环境安装PostgreSQL"></a>Windows环境安装PostgreSQL</h1><h2 id="安装步骤"><a href="#安装步骤" class="headerlink" title="安装步骤"></a>安装步骤</h2><p>要在Docker Desktop上安装PostgreSQL数据库，请按照以下步骤进行操作：</p>
<ol>
<li><p>首先，确保您已经安装了Docker Desktop，并且它正在运行。</p>
</li>
<li><p>打开终端或命令提示符，并输入以下命令来从Docker Hub下载并运行PostgreSQL镜像：</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">docker run --name my-postgres -e POSTGRES_PASSWORD=mysecretpassword -p 5432:5432 -d postgres</span><br></pre></td></tr></table></figure>

<p>这将在Docker容器中运行一个名为”my-postgres”的PostgreSQL实例。您可以根据需要更改容器名称和密码。</p>
</li>
<li><p>等待一段时间，直到容器成功启动。您可以使用以下命令检查容器的状态：</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">docker ps</span><br></pre></td></tr></table></figure>

<p>如果容器正在运行，您将看到一个包含PostgreSQL容器的条目。</p>
</li>
<li><p>现在，您可以使用任何支持PostgreSQL的客户端工具连接到数据库。例如，您可以使用psql命令行工具连接到容器中的数据库：</p>
<p>使用完整的路径来运行 <code>psql</code> 命令：如果您知道 PostgreSQL 客户端工具的安装路径，可以直接使用完整的路径来运行 <code>psql</code> 命令。例如，在 Windows 上，您可以尝试运行以下命令：</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">&quot;C:\Program Files\PostgreSQL\&lt;version&gt;\bin\psql&quot; -h localhost -p 5432 -U postgres</span><br></pre></td></tr></table></figure>

<p>请确保将 <code>&lt;version&gt;</code> 替换为您安装的 PostgreSQL 版本号。</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">psql -h localhost -p 5432 -U postgres</span><br></pre></td></tr></table></figure>

<p>或者</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">docker exec -it &lt;container_id&gt; psql -U postgres</span><br></pre></td></tr></table></figure>

<p>将 <code>&lt;container_id&gt;</code> 替换为您的 PostgreSQL 容器的 ID 或名称。</p>
<p>输入密码时，请使用在第2步中设置的密码。</p>
</li>
<li><p>您已成功在Docker Desktop上安装和运行了PostgreSQL数据库。现在，您可以使用该数据库进行开发和测试。</p>
</li>
</ol>
<h2 id="常见错误"><a href="#常见错误" class="headerlink" title="常见错误"></a>常见错误</h2><p>docker: Error response from daemon: Ports are not available: exposing port TCP 0.0.0.0:5432 -&gt; 0.0.0.0:0: listen tcp 0.0.0.0:5432: bind: An attempt was made to access a socket in a way forbidden by its access permissions.</p>
<p>这个错误提示表明端口 5432 在您的系统上已被占用，因此 Docker 无法将容器的端口映射到主机上。要解决此问题，您可以尝试以下几种方法：</p>
<ol>
<li><p>检查端口占用情况：运行以下命令以查看系统上当前正在使用的端口：</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">netstat -ano | findstr :5432</span><br></pre></td></tr></table></figure>

<p>如果该端口已被占用，您将看到相关的进程ID（PID）。请记下该PID。</p>
</li>
<li><p>停止占用端口的进程：使用以下命令停止占用端口的进程（将 <code>&lt;PID&gt;</code> 替换为在上一步中找到的进程ID）：</p>
<ul>
<li><p>在 Windows 上：</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">taskkill /PID &lt;PID&gt; /F</span><br></pre></td></tr></table></figure>
</li>
<li><p>在 macOS 或 Linux 上：</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">kill &lt;PID&gt;</span><br></pre></td></tr></table></figure></li>
</ul>
<p>请注意，停止进程可能会影响正在运行的其他应用程序，请谨慎操作。</p>
</li>
<li><p>更改映射的端口：如果您不想停止占用端口的进程，您可以尝试将容器中的端口映射到主机上的其他可用端口。例如，您可以将 <code>-p 5432:5432</code> 修改为 <code>-p 5433:5432</code>，将容器的端口 5432 映射到主机的端口 5433。</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">docker run --name my-postgres -e POSTGRES_PASSWORD=mysecretpassword -p 5433:5432 -d postgres</span><br></pre></td></tr></table></figure>

<p>这样做后，您可以使用主机上的端口 5433 来连接到 PostgreSQL 数据库。</p>
</li>
</ol>
<p>请注意，以上方法可能需要管理员权限或超级用户权限（如在 macOS 或 Linux 上使用 <code>sudo</code> 命令）。如果问题仍然存在，请确保您的系统配置正确，并确保没有其他程序正在占用该端口。</p>
<p>如果端口未被占用仍然有以上提示，可以尝试在cmd终端以管理员身份执行以下命令</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">net stop winnat</span><br><span class="line"></span><br><span class="line"># 然后运行docker</span><br><span class="line"></span><br><span class="line">net start winnat</span><br></pre></td></tr></table></figure>

 
      <!-- reward -->
      
    </div>
    

    <!-- copyright -->
    
    <footer class="article-footer">
       
  <ul class="article-tag-list" itemprop="keywords"><li class="article-tag-list-item"><a class="article-tag-list-link" href="/tags/PostgreSQL/" rel="tag">PostgreSQL</a></li></ul>

    </footer>
  </div>

    
 
   
  
</article>

    
    <article
  id="post-Mysqll判空的一个坑"
  class="article article-type-post"
  itemscope
  itemprop="blogPost"
  data-scroll-reveal
>
  <div class="article-inner">
    
    <header class="article-header">
       
<h2 itemprop="name">
  <a class="article-title" href="/2023/07/14/Mysqll%E5%88%A4%E7%A9%BA%E7%9A%84%E4%B8%80%E4%B8%AA%E5%9D%91/"
    >Mysql判空陷阱</a> 
</h2>
 

      
    </header>
     
    <div class="article-meta">
      <a href="/2023/07/14/Mysqll%E5%88%A4%E7%A9%BA%E7%9A%84%E4%B8%80%E4%B8%AA%E5%9D%91/" class="article-date">
  <time datetime="2023-07-14T09:13:12.104Z" itemprop="datePublished">2023-07-14</time>
</a> 
  <div class="article-category">
    <a class="article-category-link" href="/categories/%E8%B8%A9%E5%9D%91/">踩坑</a>
  </div>
   
    </div>
      
    <div class="article-entry" itemprop="articleBody">
       
  <p>Mysql使用 <code>&lt;&gt; &#39;&#39;</code> 判空时数值类型字段会过滤掉值为0 的数据</p>
<figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">SELECT</span> <span class="operator">*</span> <span class="keyword">FROM</span> student </span><br></pre></td></tr></table></figure>

<p><img src="https://img2023.cnblogs.com/blog/2233039/202307/2233039-20230714170917798-1473273873.png" alt="image-20230714170917169"></p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">SELECT * FROM student WHERE userid &lt;&gt; &#x27;&#x27;</span><br></pre></td></tr></table></figure>

<p><img src="https://img2023.cnblogs.com/blog/2233039/202307/2233039-20230714171220997-28391343.png" alt="image-20230714171221940"></p>
<p>文本类型字段可以过滤掉为null 和空串的数据并且不会把为0的数据过滤</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">SELECT * FROM student WHERE Sname &lt;&gt; &#x27;&#x27;</span><br></pre></td></tr></table></figure>

<p><img src="https://img2023.cnblogs.com/blog/2233039/202307/2233039-20230714171127769-998504998.png" alt="image-20230714171128337"></p>
 
      <!-- reward -->
      
    </div>
    

    <!-- copyright -->
    
    <footer class="article-footer">
       
  <ul class="article-tag-list" itemprop="keywords"><li class="article-tag-list-item"><a class="article-tag-list-link" href="/tags/mysql/" rel="tag">mysql</a></li></ul>

    </footer>
  </div>

    
 
   
  
</article>

    
    <article
  id="post-远程Debug调试"
  class="article article-type-post"
  itemscope
  itemprop="blogPost"
  data-scroll-reveal
>
  <div class="article-inner">
    
    <header class="article-header">
       
<h2 itemprop="name">
  <a class="article-title" href="/2023/07/11/%E8%BF%9C%E7%A8%8BDebug%E8%B0%83%E8%AF%95/"
    >IDEA远程Debug调试配置</a> 
</h2>
 

      
    </header>
     
    <div class="article-meta">
      <a href="/2023/07/11/%E8%BF%9C%E7%A8%8BDebug%E8%B0%83%E8%AF%95/" class="article-date">
  <time datetime="2023-07-11T01:47:15.907Z" itemprop="datePublished">2023-07-11</time>
</a> 
  <div class="article-category">
    <a class="article-category-link" href="/categories/%E5%B0%8F%E6%8A%80%E8%83%BD/">小技能</a>
  </div>
   
    </div>
      
    <div class="article-entry" itemprop="articleBody">
       
  <h2 id="操作步骤"><a href="#操作步骤" class="headerlink" title="操作步骤"></a>操作步骤</h2><p>查看虚拟机ip</p>
<p><img src="https://img2023.cnblogs.com/blog/2233039/202307/2233039-20230711095129743-1341074553.png" alt="image-20230711095127887"></p>
<p>选择 <code>Edit Configurations..</code></p>
<p><img src="https://img2023.cnblogs.com/blog/2233039/202307/2233039-20230711095333007-1384409553.png" alt="image-20230711095333212"></p>
<p>点击 Add new 选择 <code>Remote JVM Debug</code></p>
<p><img src="https://img2023.cnblogs.com/blog/2233039/202307/2233039-20230711095610898-1421599583.png" alt="image-20230711095611363"></p>
<p>配置服务名称，主机地址，端口</p>
<p><img src="https://img2023.cnblogs.com/blog/2233039/202307/2233039-20230711100003664-505895083.png" alt="image-20230711100003615"></p>
<p>以Resin服务为例，须在Resin服务的JVM参数中新增JVM参数配置</p>
<p>Resin低版本相关配置文件目录为<code>Resin/conf/resin.conf</code></p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">&lt;jvm-arg&gt;-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=9090&lt;/jvm-arg&gt;</span><br></pre></td></tr></table></figure>

<p><img src="https://img2023.cnblogs.com/blog/2233039/202307/2233039-20230711100324808-1381934771.png" alt="image-20230711100325206"></p>
<p>Resin较高版本相关配置文件为<code>Resin/conf/resin.properties</code></p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"># Arg passed directly to the JVM</span><br><span class="line"> jvm_args  : -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=9090 -Xmx2789m -Xms2789m -XX:ParallelGCThreads=20 -XX:+UseConcMarkSweepGC -XX:-OmitStackTraceInFastThrow -XX:+UseParNewGC -XX:+DisableExplicitGC -javaagent:wagent.jar -javaagent:stophotdeploy.jar -Djdk.tls.ephemeralDHKeySize=2048 -Dfile.encoding=GBK -javaagent:rasp/rasp.jar</span><br><span class="line"> jvm_mode  : -server</span><br></pre></td></tr></table></figure>

<p><img src="https://img2023.cnblogs.com/blog/2233039/202307/2233039-20230711105614120-1969171466.png" alt="image-20230711105614242"></p>
<p>在需要调试的位置打上断点</p>
<p><img src="https://img2023.cnblogs.com/blog/2233039/202307/2233039-20230711100522735-540194541.png" alt="image-20230711100523149"></p>
<p>点击debug即可开启远程调试</p>
<p><img src="https://img2023.cnblogs.com/blog/2233039/202307/2233039-20230711100607557-614681713.png" alt="image-20230711100607238"></p>
<p>服务端点击操作触发接口动作即可执行代码进行远程调试</p>
<p><img src="https://img2023.cnblogs.com/blog/2233039/202307/2233039-20230711103729065-1522098422.png" alt="image-20230711103728331"></p>
<h2 id="注意点"><a href="#注意点" class="headerlink" title="注意点"></a>注意点</h2><ul>
<li><p>本地代码需与服务端运行的代码保持一致</p>
</li>
<li><p>调式完毕后注意将断点去除或关闭远程调试</p>
</li>
</ul>
 
      <!-- reward -->
      
    </div>
    

    <!-- copyright -->
    
    <footer class="article-footer">
       
  <ul class="article-tag-list" itemprop="keywords"><li class="article-tag-list-item"><a class="article-tag-list-link" href="/tags/IDEA-Debug/" rel="tag">IDEA Debug</a></li></ul>

    </footer>
  </div>

    
 
   
  
</article>

    
    <article
  id="post-時光的免费GPT服务"
  class="article article-type-post"
  itemscope
  itemprop="blogPost"
  data-scroll-reveal
>
  <div class="article-inner">
    
    <header class="article-header">
       
<h2 itemprop="name">
  <a class="article-title" href="/2023/06/23/%E6%99%82%E5%85%89%E7%9A%84%E5%85%8D%E8%B4%B9GPT%E6%9C%8D%E5%8A%A1/"
    >時光的免费GPT服务</a> 
</h2>
 

      
    </header>
     
    <div class="article-meta">
      <a href="/2023/06/23/%E6%99%82%E5%85%89%E7%9A%84%E5%85%8D%E8%B4%B9GPT%E6%9C%8D%E5%8A%A1/" class="article-date">
  <time datetime="2023-06-23T04:38:38.000Z" itemprop="datePublished">2023-06-23</time>
</a> 
  <div class="article-category">
    <a class="article-category-link" href="/categories/%E5%B7%A5%E5%85%B7%E7%AE%B1/">工具箱</a>
  </div>
   
    </div>
      
    <div class="article-entry" itemprop="articleBody">
       
  <p>目前提供4个免费服务，3个ChatGPT服务和一个NewBing服务，均不需要魔法，兼容移动端</p>
<p>所提供的服务均基于开源项目进行部署，项目地址均有提供，现有服务均部署在代码托管平台 <a target="_blank" rel="noopener" href="https://vercel.com/">Vercel</a> 上</p>
<p>如果你也想要搭建一个自己的服务，仅需将开源项目Fork到自己的<a target="_blank" rel="noopener" href="https://github.com/">github</a>仓库，点击一键部署即可免费部署</p>
<h1 id="1、pandora"><a href="#1、pandora" class="headerlink" title="1、pandora"></a>1、pandora</h1><blockquote>
<p><a target="_blank" rel="noopener" href="https://chatgpt.shiguang666.eu.org/">直通车 : https://chatgpt.shiguang666.eu.org/</a></p>
</blockquote>
<p>基于开源项目 <a target="_blank" rel="noopener" href="https://github.com/pengzhile/pandora">pandora</a>搭建,可通过OpenAI账号或AccessToken登录</p>
<p><img src="https://img2023.cnblogs.com/blog/2233039/202306/2233039-20230623124505658-1322894106.png" alt="image-20230623124505442"></p>
<p>点击 <code>Continue with Access Token</code> 可采用Access Token进行登录，输入自己的Access Token 即可</p>
<p>Access Token 有效期为半个月，采用该方式登录每半个月需要重新获取一次</p>
<p><img src="https://img2023.cnblogs.com/blog/2233039/202306/2233039-20230623135923691-230062675.png" alt="image-20230623135924192"></p>
<p><strong>Access Token 获取方式</strong></p>
<p>在<a target="_blank" rel="noopener" href="https://chat.openai.com/auth/login">ChatGPT官网</a>登录后，访问**<a target="_blank" rel="noopener" href="https://chat.openai.com/api/auth/session">https://chat.openai.com/api/auth/session</a>**即可获取Access Token </p>
<p><img src="https://img2023.cnblogs.com/blog/2233039/202306/2233039-20230623140342976-248814744.png" alt="image-20230623140343068"></p>
<p>让它写个冒泡排序看一下效果吧</p>
<p><img src="https://img2023.cnblogs.com/blog/2233039/202306/2233039-20230623150611354-1875732832.png" alt="image-20230623150611510"></p>
<p>效果还不错</p>
<p><img src="https://img2023.cnblogs.com/blog/2233039/202306/2233039-20230623150708510-1961407475.png" alt="image-20230623150708927"></p>
<h1 id="2、ChatGPT-Next-Web"><a href="#2、ChatGPT-Next-Web" class="headerlink" title="2、ChatGPT-Next-Web"></a>2、ChatGPT-Next-Web</h1><blockquote>
<p><a target="_blank" rel="noopener" href="https://gpt.shiguang666.eu.org/">直通车：https://gpt.shiguang666.eu.org/</a></p>
</blockquote>
<p>基于开源项目  <a target="_blank" rel="noopener" href="https://github.com/Yidadaa/ChatGPT-Next-Web">ChatGPT-Next-Web</a> 搭建，可通过API Key 或我提供的访问密码访问</p>
<p>通过访问密码访问实际消耗的是我的API key的余额，纯纯地为爱发电了</p>
<p><strong>访问密码：shiguang、shiguang666、shiguang888均可</strong></p>
<p><img src="https://img2023.cnblogs.com/blog/2233039/202306/2233039-20230623130136696-923051977.png" alt="image-20230623130136951"></p>
<p><img src="https://img2023.cnblogs.com/blog/2233039/202306/2233039-20230623140628427-1176698393.png" alt="image-20230623140628673"></p>
<p><strong>API Key 获取方式</strong></p>
<p>在<a target="_blank" rel="noopener" href="https://chat.openai.com/auth/login">ChatGPT官网</a>登录后，访问<a target="_blank" rel="noopener" href="https://platform.openai.com/account/api-keys">https://platform.openai.com/account/api-keys</a></p>
<p>点击 <code>Create new secret key</code> 创建一个新的key</p>
<p><img src="https://img2023.cnblogs.com/blog/2233039/202306/2233039-20230623152051717-986166001.png" alt="image-20230623152052094"></p>
<p>名称可随便输入，用于区分不同的key</p>
<p><img src="https://img2023.cnblogs.com/blog/2233039/202306/2233039-20230623141310502-392269563.png" alt="image-20230623141310816"></p>
<p>再次点击 <code>Create secret key</code> 后会生成 一个新的key，该key只显示一次，可复制保存起来</p>
<p><img src="https://img2023.cnblogs.com/blog/2233039/202306/2233039-20230623141506490-510570772.png" alt="image-20230623141506757"></p>
<h1 id="3、chatbot-ui"><a href="#3、chatbot-ui" class="headerlink" title="3、chatbot-ui"></a>3、chatbot-ui</h1><blockquote>
<p><a target="_blank" rel="noopener" href="https://chatbot.shiguang666.eu.org/">直通车：https://chatbot.shiguang666.eu.org/</a></p>
</blockquote>
<p>基于开源项目 <a target="_blank" rel="noopener" href="https://github.com/mckaywrigley/chatbot-ui">chatbot-ui</a> 搭建，可通过API Key 进行访问</p>
<p>一个暗黑主题Chatbot UI，支持导入、导出对话、设置自定义提示词功能</p>
<p><img src="https://img2023.cnblogs.com/blog/2233039/202306/2233039-20230623131435988-472713035.png" alt="image-20230623131436278"></p>
<p>在右上方点击新建提示可以自定义提示词</p>
<p><img src="https://img2023.cnblogs.com/blog/2233039/202306/2233039-20230623142944365-20003562.png" alt="image-20230623142944649"></p>
<p>提示词可以参考 <a target="_blank" rel="noopener" href="https://github.com/PlexPt/awesome-chatgpt-prompts-zh">ChatGPT 中文调教指南</a></p>
<p><img src="https://img2023.cnblogs.com/blog/2233039/202306/2233039-20230623142806353-579402189.png" alt="image-20230623142806694"></p>
<h1 id="4、BingAI-Client"><a href="#4、BingAI-Client" class="headerlink" title="4、BingAI-Client"></a>4、BingAI-Client</h1><blockquote>
<p><a target="_blank" rel="noopener" href="https://newbing.shiguang666.eu.org/">直通车:https://newbing.shiguang666.eu.org/</a></p>
</blockquote>
<p>基于开源项目 <a target="_blank" rel="noopener" href="https://github.com/xbzstudio/BingAI-Client">BingAI-Client </a> 搭建，可直接访问</p>
<p><img src="https://img2023.cnblogs.com/blog/2233039/202306/2233039-20230623131538939-606595581.png" alt="image-20230623131538915"></p>
<p>支持联网、并且所有回答都附有相关链接</p>
<p><img src="https://img2023.cnblogs.com/blog/2233039/202306/2233039-20230623143713359-639366602.png" alt="2023-06-23_143456"></p>
<p>问答的时候可以响应图片，不过兼容性做的不是很好</p>
<p><img src="https://img2023.cnblogs.com/blog/2233039/202306/2233039-20230623144310735-1643510665.png" alt="image-20230623144311096"></p>
<p>可以点击画图体验画图功能，不过效果和midjourney相比还有一定距离</p>
<p><img src="https://img2023.cnblogs.com/blog/2233039/202306/2233039-20230623144550923-1355886502.png" alt="image-20230623144551142"></p>
<p>也可以进行AI创作，让它写一下今年的高考作文吧</p>
<p><img src="https://img2023.cnblogs.com/blog/2233039/202306/2233039-20230623145556825-1902190681.png" alt="image-20230623145556941"></p>
<h1 id="5、小贴士"><a href="#5、小贴士" class="headerlink" title="5、小贴士"></a>5、小贴士</h1><p>通过OpenAI账号登录或AccessToken登录是真正的不限次数访问</p>
<p>通过API Key访问需要消耗账户内余额，每个免费账号有5美元API调用余额而且是会过期的</p>
<p><img src="https://img2023.cnblogs.com/blog/2233039/202306/2233039-20230623133118819-1157994986.png" alt="image-20230623133119076"></p>
<p>另外，对于不同账户，通过API访问的限速级别也是不同的</p>
<p><img src="https://img2023.cnblogs.com/blog/2233039/202306/2233039-20230623134007784-113165402.png" alt="image-20230623134008145"></p>
<p>相关推荐</p>
<p><a target="_blank" rel="noopener" href="https://www.cnblogs.com/an-shiguang/p/17308296.html">玩转ChatGPT</a></p>
 
      <!-- reward -->
      
    </div>
    

    <!-- copyright -->
    
    <footer class="article-footer">
       
  <ul class="article-tag-list" itemprop="keywords"><li class="article-tag-list-item"><a class="article-tag-list-link" href="/tags/AI/" rel="tag">AI</a></li><li class="article-tag-list-item"><a class="article-tag-list-link" href="/tags/ChatGPT/" rel="tag">ChatGPT</a></li><li class="article-tag-list-item"><a class="article-tag-list-link" href="/tags/NewBing/" rel="tag">NewBing</a></li></ul>

    </footer>
  </div>

    
 
   
  
</article>

    
    <article
  id="post-Mysql查询时生成索引列"
  class="article article-type-post"
  itemscope
  itemprop="blogPost"
  data-scroll-reveal
>
  <div class="article-inner">
    
    <header class="article-header">
       
<h2 itemprop="name">
  <a class="article-title" href="/2023/05/26/Mysql%E6%9F%A5%E8%AF%A2%E6%97%B6%E7%94%9F%E6%88%90%E7%B4%A2%E5%BC%95%E5%88%97/"
    >Mysql查询时生成索引列</a> 
</h2>
 

      
    </header>
     
    <div class="article-meta">
      <a href="/2023/05/26/Mysql%E6%9F%A5%E8%AF%A2%E6%97%B6%E7%94%9F%E6%88%90%E7%B4%A2%E5%BC%95%E5%88%97/" class="article-date">
  <time datetime="2023-05-26T05:39:34.000Z" itemprop="datePublished">2023-05-26</time>
</a> 
  <div class="article-category">
    <a class="article-category-link" href="/categories/%E5%A5%BD%E8%AE%B0%E6%80%A7%E4%B8%8D%E5%A6%82%E7%83%82%E7%AC%94%E5%A4%B4/">好记性不如烂笔头</a>
  </div>
   
    </div>
      
    <div class="article-entry" itemprop="articleBody">
       
  <p>在查询数据时，如果想要按照查询结果所在行数生成一列索引列，可以</p>
<figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">SELECT</span></span><br><span class="line">	<span class="variable">@rownum</span> :<span class="operator">=</span> <span class="variable">@rownum</span> <span class="operator">+</span> <span class="number">1</span> rownum,</span><br><span class="line">	e.<span class="operator">*</span> </span><br><span class="line"><span class="keyword">FROM</span></span><br><span class="line">	( <span class="keyword">SELECT</span> <span class="variable">@rownum</span> :<span class="operator">=</span> <span class="number">0</span> ) r,</span><br><span class="line">	student e</span><br></pre></td></tr></table></figure>

<p>其中，student 表是实际要查询的表，rownum即为按照数据所在行生成的索引列</p>
<p><img src="https://img2023.cnblogs.com/blog/2233039/202305/2233039-20230526134246189-245025638.png" alt="image-20230526134247227"></p>
 
      <!-- reward -->
      
    </div>
    

    <!-- copyright -->
    
    <footer class="article-footer">
       
  <ul class="article-tag-list" itemprop="keywords"><li class="article-tag-list-item"><a class="article-tag-list-link" href="/tags/Mysql/" rel="tag">Mysql</a></li></ul>

    </footer>
  </div>

    
 
   
  
</article>

    
    <article
  id="post-com-alibaba-fastjson转换json时默认将属性第一个字母转小写"
  class="article article-type-post"
  itemscope
  itemprop="blogPost"
  data-scroll-reveal
>
  <div class="article-inner">
    
    <header class="article-header">
       
<h2 itemprop="name">
  <a class="article-title" href="/2023/05/09/com-alibaba-fastjson%E8%BD%AC%E6%8D%A2json%E6%97%B6%E9%BB%98%E8%AE%A4%E5%B0%86%E5%B1%9E%E6%80%A7%E7%AC%AC%E4%B8%80%E4%B8%AA%E5%AD%97%E6%AF%8D%E8%BD%AC%E5%B0%8F%E5%86%99/"
    >com.alibaba.fastjson转换json时默认将属性第一个字母转小写</a> 
</h2>
 

      
    </header>
     
    <div class="article-meta">
      <a href="/2023/05/09/com-alibaba-fastjson%E8%BD%AC%E6%8D%A2json%E6%97%B6%E9%BB%98%E8%AE%A4%E5%B0%86%E5%B1%9E%E6%80%A7%E7%AC%AC%E4%B8%80%E4%B8%AA%E5%AD%97%E6%AF%8D%E8%BD%AC%E5%B0%8F%E5%86%99/" class="article-date">
  <time datetime="2023-05-09T09:09:46.000Z" itemprop="datePublished">2023-05-09</time>
</a> 
  <div class="article-category">
    <a class="article-category-link" href="/categories/%E8%B8%A9%E5%9D%91/">踩坑</a>
  </div>
   
    </div>
      
    <div class="article-entry" itemprop="articleBody">
       
  <h2 id="问题描述"><a href="#问题描述" class="headerlink" title="问题描述"></a>问题描述</h2><p>将实体类对象转为json字符串的时候，会将属性名首字母改为小写</p>
<p>例如此出User队形有两个属性，USER_NAME和USER_AGE，首字母均为大写</p>
<p><img src="https://img2023.cnblogs.com/blog/2233039/202305/2233039-20230509174435305-2012131246.png" alt="image-20230509174435159"></p>
<p>将实体类对象转为JSON后首字母全都转换为了小写</p>
<p><img src="https://img2023.cnblogs.com/blog/2233039/202305/2233039-20230509174520360-1286878580.png" alt="image-20230509174520330"></p>
<h2 id="解决方法"><a href="#解决方法" class="headerlink" title="解决方法"></a>解决方法</h2><p>这是因为阿里巴巴的fastjson框架默认使用了JavaBean规范中的命名约定，将属性名首字母小写，以符合ava编码规<br>范。因此，当使用fastjson的SONObject.toJSONString方法将一个实体类对象转换为SON字符串时，实体类的属性名<br>会被自动转换成首字母小写的形式。如果需要在SON字符串中保留属性名的原始命名，可以使用fastjso提供的注解<br>@SONField来指定属性名</p>
<p><img src="https://img2023.cnblogs.com/blog/2233039/202305/2233039-20230509174956922-2038658882.png" alt="image-20230509174956741"></p>
<p>这样转换的属性名称就正常了</p>
<p><img src="https://img2023.cnblogs.com/blog/2233039/202305/2233039-20230509175032208-1042058630.png" alt="image-20230509175032285"></p>
<h2 id="相关代码"><a href="#相关代码" class="headerlink" title="相关代码"></a>相关代码</h2><figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> com.alibaba.fastjson.JSONObject;</span><br><span class="line"><span class="keyword">import</span> com.alibaba.fastjson.annotation.JSONField;</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="keyword">public</span> <span class="keyword">class</span> <span class="title class_">User</span> &#123;</span><br><span class="line">    <span class="meta">@JSONField(name = &quot;USER_NAME&quot;)</span></span><br><span class="line">    <span class="keyword">private</span>  String USER_NAME;</span><br><span class="line">    <span class="meta">@JSONField(name = &quot;USER_AGE&quot;)</span></span><br><span class="line">    <span class="keyword">private</span> Integer USER_AGE;</span><br><span class="line"></span><br><span class="line">    <span class="keyword">public</span> <span class="title function_">User</span><span class="params">()</span> &#123;</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line"></span><br><span class="line">    <span class="keyword">public</span> String <span class="title function_">getUSER_NAME</span><span class="params">()</span> &#123;</span><br><span class="line">        <span class="keyword">return</span> USER_NAME;</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    <span class="keyword">public</span> <span class="keyword">void</span> <span class="title function_">setUSER_NAME</span><span class="params">(String USER_NAME)</span> &#123;</span><br><span class="line">        <span class="built_in">this</span>.USER_NAME = USER_NAME;</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    <span class="keyword">public</span> Integer <span class="title function_">getUSER_AGE</span><span class="params">()</span> &#123;</span><br><span class="line">        <span class="keyword">return</span> USER_AGE;</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    <span class="keyword">public</span> <span class="keyword">void</span> <span class="title function_">setUSER_AGE</span><span class="params">(Integer USER_AGE)</span> &#123;</span><br><span class="line">        <span class="built_in">this</span>.USER_AGE = USER_AGE;</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    <span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">void</span> <span class="title function_">main</span><span class="params">(String[] args)</span> &#123;</span><br><span class="line">        <span class="type">User</span> <span class="variable">user</span> <span class="operator">=</span> <span class="keyword">new</span> <span class="title class_">User</span>();</span><br><span class="line">        user.setUSER_NAME(<span class="string">&quot;张三&quot;</span>);</span><br><span class="line">        user.setUSER_AGE(<span class="number">18</span>);</span><br><span class="line">        System.out.println(JSONObject.toJSONString(user));</span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure>

 
      <!-- reward -->
      
    </div>
    

    <!-- copyright -->
    
    <footer class="article-footer">
       
  <ul class="article-tag-list" itemprop="keywords"><li class="article-tag-list-item"><a class="article-tag-list-link" href="/tags/JSON/" rel="tag">JSON</a></li></ul>

    </footer>
  </div>

    
 
   
  
</article>

    
    <article
  id="post-玩转ChatGPT"
  class="article article-type-post"
  itemscope
  itemprop="blogPost"
  data-scroll-reveal
>
  <div class="article-inner">
    
    <header class="article-header">
       
<h2 itemprop="name">
  <a class="article-title" href="/2023/05/08/%E7%8E%A9%E8%BD%ACChatGPT/"
    >玩转ChatGPT</a> 
</h2>
 

      
    </header>
     
    <div class="article-meta">
      <a href="/2023/05/08/%E7%8E%A9%E8%BD%ACChatGPT/" class="article-date">
  <time datetime="2023-05-08T05:10:57.000Z" itemprop="datePublished">2023-05-08</time>
</a> 
  <div class="article-category">
    <a class="article-category-link" href="/categories/%E5%B7%A5%E5%85%B7%E7%AE%B1/">工具箱</a>
  </div>
   
    </div>
      
    <div class="article-entry" itemprop="articleBody">
       
  <blockquote>
<p>本文数据均来源网络，仅供个人学习使用，请勿用于商业用途，如有侵权请联系删除</p>
</blockquote>
<h1 id="一、学习手册"><a href="#一、学习手册" class="headerlink" title="一、学习手册"></a>一、学习手册</h1><p><a target="_blank" rel="noopener" href="https://nujuo8y1qx.feishu.cn/docx/AdqEdlT52oBiawx6Vv2cc89DnLb">ChatGTP学习手册</a></p>
<p><a target="_blank" rel="noopener" href="https://yunyinghui.feishu.cn/wiki/M60IwpJhwiRD1lkeFGVc70CSnTr">ChatGPT学习工具包</a></p>
<p><a target="_blank" rel="noopener" href="https://nujuo8y1qx.feishu.cn/docx/RleadAwrAo4O1FxhuoGcDV86nBe">AIGC学习手册</a></p>
<p><a target="_blank" rel="noopener" href="https://yunyinghui.feishu.cn/wiki/VnVOwXvDViBdkNkgTeDcM95gnud">AI实用工具导航</a></p>
<p><a target="_blank" rel="noopener" href="https://yunyinghui.feishu.cn/docx/IVeidlyAdoDZFExb1eucDfcan4b">AI事件每日大纪实</a></p>
<p><a target="_blank" rel="noopener" href="https://learningprompt.wiki/docs/chatgpt-learning-path">ChatGPT学习导航</a></p>
<p><a target="_blank" rel="noopener" href="https://op9hpenwtc.feishu.cn/docx/TccYdYoPGo2piYxqHtLcuukBnOh">ChatGPT学习指南</a></p>
<p><a target="_blank" rel="noopener" href="https://www.explainthis.io/zh-hans/chatgpt">ChatGPT指令大全</a></p>
<p><a target="_blank" rel="noopener" href="https://learningprompt.wiki/">learningprompt</a></p>
<p><a target="_blank" rel="noopener" href="https://www.aishort.top/">https://www.aishort.top/</a></p>
<p><a target="_blank" rel="noopener" href="https://y3if3fk7ce.feishu.cn/docx/BiQqdkWKroLBJ8xrO2Cc6vQZnce">ChatGPT prompt指令大全</a></p>
<p><a target="_blank" rel="noopener" href="https://y3if3fk7ce.feishu.cn/sheets/BIeAsn8IvhX3HUtcf84cFViinu3?table=tblTLSqLLvUznxAZ&view=vewP2B92zv">AI资料网盘汇总</a></p>
<p><a target="_blank" rel="noopener" href="https://y3if3fk7ce.feishu.cn/docx/QBqwdyde7omVf4x69paconlgnAc">AIGC从入门到精通教程汇总</a></p>
<h1 id="二、在线体验"><a href="#二、在线体验" class="headerlink" title="二、在线体验"></a>二、在线体验</h1><p><a target="_blank" rel="noopener" href="https://chat-shared.zhile.io/shared.html">共享ChatGPT账号</a></p>
<p>数据源一</p>
<p><a target="_blank" rel="noopener" href="https://chat.aidutu.cn/">https://chat.aidutu.cn/</a></p>
<p><a target="_blank" rel="noopener" href="https://chat.bk8787.com/">https://chat.bk8787.com/</a></p>
<p>数据源二</p>
<p><a target="_blank" rel="noopener" href="http://doc.wuguokai.cn/s/xPq1iNw_v">最新文档地址</a></p>
<p><a target="_blank" rel="noopener" href="https://chat.wuguokai.cn/">https://chat.wuguokai.cn</a></p>
<p><a target="_blank" rel="noopener" href="https://ai.wuguokai.cn/">https://ai.wuguokai.cn</a></p>
<p><a target="_blank" rel="noopener" href="https://ai.wuguokai.top/">https://ai.wuguokai.top</a></p>
<p>数据源三</p>
<p><a target="_blank" rel="noopener" href="https://wet.xeasy.me/">https://wet.xeasy.me/</a></p>
<p><a target="_blank" rel="noopener" href="https://wet.xeasy.me/">ChatGPT Bot (xeasy.me)</a></p>
<p><a target="_blank" rel="noopener" href="https://chat23.xeasy.me/">ChatGPT Bot (xeasy.me)</a></p>
<p>数据源四</p>
<p><a target="_blank" rel="noopener" href="https://chat.extkj.cn/">Chat机器人 (extkj.cn)</a></p>
<p>客户端</p>
<p><a target="_blank" rel="noopener" href="https://github.com/mushan0x0/AI0x0.com">https://github.com/mushan0x0/AI0x0.com</a></p>
<h1 id="三、相关推荐"><a href="#三、相关推荐" class="headerlink" title="三、相关推荐"></a>三、相关推荐</h1><p><a target="_blank" rel="noopener" href="https://ai.tboxn.com/">AI导航</a></p>
<p><a target="_blank" rel="noopener" href="https://tool.aiofchina.com/">Ai工具箱</a></p>
<p><a target="_blank" rel="noopener" href="https://poe.com/">poe</a></p>
<p><a target="_blank" rel="noopener" href="https://www.cnblogs.com/an-shiguang/p/17396416.html">通过浏览器拓展免费无限次使用ChatGPT</a></p>
<p><a target="_blank" rel="noopener" href="https://www.perplexity.ai/">Perplexity</a></p>
<p>相关介绍</p>
<p><a target="_blank" rel="noopener" href="https://www.youtube.com/watch?v=SuIdmIzM3Gs">https://www.youtube.com/watch?v=SuIdmIzM3Gs</a></p>
<p><a target="_blank" rel="noopener" href="https://platform.openai.com/account/api-keys">获取API KEY</a></p>
<p><a target="_blank" rel="noopener" href="http://chat.openai.com/api/auth/session">获取AccessToken</a></p>
<p>四、免费体验GPT4.0</p>
<p>1、<a target="_blank" rel="noopener" href="https://www.bing.com/">New Bing</a></p>
<p><a target="_blank" rel="noopener" href="https://poe.com/">https://poe.com/</a></p>
<p><a target="_blank" rel="noopener" href="https://www.perplexity.ai/">https://www.perplexity.ai/</a></p>
<p><a target="_blank" rel="noopener" href="https://ora.ai/">https://ora.ai</a></p>
<p>需翻墙</p>
<p><a target="_blank" rel="noopener" href="https://www.forefront.ai/">https://www.forefront.ai/</a></p>
<p><a target="_blank" rel="noopener" href="https://deepmind.google/technologies/gemini/#introduction">Gemini 官网</a></p>
<p><a target="_blank" rel="noopener" href="https://bard.google.com/chat">谷歌Bard</a>)</p>
<p><a target="_blank" rel="noopener" href="https://web.chatboxai.app/">chatbox</a></p>
<p><a target="_blank" rel="noopener" href="https://chat.zhile.io/">PandoraNext体验</a></p>
<p><a target="_blank" rel="noopener" href="https://gptscopilot.ai/">https://gptscopilot.ai/</a></p>
 
      <!-- reward -->
      
    </div>
    

    <!-- copyright -->
    
    <footer class="article-footer">
       
  <ul class="article-tag-list" itemprop="keywords"><li class="article-tag-list-item"><a class="article-tag-list-link" href="/tags/ChatGPT/" rel="tag">ChatGPT</a></li></ul>

    </footer>
  </div>

    
 
   
  
</article>

    
    <article
  id="post-通过浏览器拓展免费使用ChatGPT"
  class="article article-type-post"
  itemscope
  itemprop="blogPost"
  data-scroll-reveal
>
  <div class="article-inner">
    
    <header class="article-header">
       
<h2 itemprop="name">
  <a class="article-title" href="/2023/05/08/%E9%80%9A%E8%BF%87%E6%B5%8F%E8%A7%88%E5%99%A8%E6%8B%93%E5%B1%95%E5%85%8D%E8%B4%B9%E4%BD%BF%E7%94%A8ChatGPT/"
    >通过浏览器拓展免费无限次使用ChatGPT</a> 
</h2>
 

      
    </header>
     
    <div class="article-meta">
      <a href="/2023/05/08/%E9%80%9A%E8%BF%87%E6%B5%8F%E8%A7%88%E5%99%A8%E6%8B%93%E5%B1%95%E5%85%8D%E8%B4%B9%E4%BD%BF%E7%94%A8ChatGPT/" class="article-date">
  <time datetime="2023-05-08T05:10:57.000Z" itemprop="datePublished">2023-05-08</time>
</a> 
  <div class="article-category">
    <a class="article-category-link" href="/categories/%E5%B7%A5%E5%85%B7%E7%AE%B1/">工具箱</a>
  </div>
   
    </div>
      
    <div class="article-entry" itemprop="articleBody">
       
  <p>随着ChatGPT的爆火，越来越多的人有了使用ChatGPT的需求，但是自己去官网注册又有一定门槛，今天给大家分享两个浏览器插件，可以实现免费且不限次使用ChatGPT3.5服务</p>
<h2 id="1、Wetab-新标签页"><a href="#1、Wetab-新标签页" class="headerlink" title="1、Wetab 新标签页"></a>1、<a target="_blank" rel="noopener" href="https://chrome.zzzmh.cn/info/aikflfpejipbpjdlfabpgclhblkpaafo">Wetab 新标签页</a></h2><p>安装好Wetab标签页拓展后，打开一个新的浏览器窗口，就可以在最醒目的位置看到chat AI 的快捷应用窗口</p>
<p><img src="https://img2023.cnblogs.com/blog/2233039/202305/2233039-20230508131627191-415847501.png" alt="image-20230508131626074"></p>
<p>有多个服务源可供选择，你也可以添加自定义服务源</p>
<p><img src="https://img2023.cnblogs.com/blog/2233039/202305/2233039-20230508131855435-1274943669.png" alt="image-20230508131854960"></p>
<p>窗口左上角有两个图标，左边橙色的是关闭当前聊天窗口，右边绿色的可以缩放聊天窗口</p>
<p><img src="https://img2023.cnblogs.com/blog/2233039/202305/2233039-20230508132131875-1908168771.png" alt="image-20230508132131704"></p>
<h2 id="2、iTab新标签页"><a href="#2、iTab新标签页" class="headerlink" title="2、iTab新标签页"></a>2、<a target="_blank" rel="noopener" href="https://chrome.zzzmh.cn/info/mhloojimgilafopcmlcikiidgbbnelip">iTab新标签页</a></h2><p>标签页右键可以添加图标</p>
<p><img src="https://img2023.cnblogs.com/blog/2233039/202305/2233039-20230508132436611-44311079.png" alt="image-20230508132435455"></p>
<p> 默认打开的就是小组件窗口，第一AiBot就是标签页给我们提供的AI助手了</p>
<p><img src="https://img2023.cnblogs.com/blog/2233039/202305/2233039-20230508132546615-474390200.png" alt="image-20230508132546129"></p>
<p>这里面提供了很多AI功能</p>
<p><img src="https://img2023.cnblogs.com/blog/2233039/202305/2233039-20230508132740127-1759237432.png" alt="image-20230508132739508"></p>
<p>涵盖的功能还是很多的</p>
<p><img src="https://img2023.cnblogs.com/blog/2233039/202305/2233039-20230508132854163-631157504.png" alt="image-20230508132853556"></p>
<h2 id="3、ChatGPT镜像站推荐"><a href="#3、ChatGPT镜像站推荐" class="headerlink" title="3、ChatGPT镜像站推荐"></a>3、ChatGPT镜像站推荐</h2><p>当然，你也可以直接访问数据源中的网址进行使用</p>
<p><a target="_blank" rel="noopener" href="https://chat-shared.zhile.io/shared.html">共享ChatGPT账号</a></p>
<p>数据源一</p>
<p><a target="_blank" rel="noopener" href="https://chat.aidutu.cn/">https://chat.aidutu.cn/</a></p>
<p><a target="_blank" rel="noopener" href="https://chat.bk8787.com/">https://chat.bk8787.com/</a></p>
<p>数据源二</p>
<p><a target="_blank" rel="noopener" href="http://doc.wuguokai.cn/s/xPq1iNw_v">最新文档地址</a></p>
<p><a target="_blank" rel="noopener" href="https://chat.wuguokai.cn/">https://chat.wuguokai.cn</a></p>
<p><a target="_blank" rel="noopener" href="https://ai.wuguokai.cn/">https://ai.wuguokai.cn</a></p>
<p><a target="_blank" rel="noopener" href="https://ai.wuguokai.top/">https://ai.wuguokai.top</a></p>
<p>数据源三</p>
<p><a target="_blank" rel="noopener" href="https://wet.xeasy.me/">https://wet.xeasy.me/</a></p>
<p><a target="_blank" rel="noopener" href="https://wet.xeasy.me/">ChatGPT Bot (xeasy.me)</a></p>
<p><a target="_blank" rel="noopener" href="https://chat23.xeasy.me/">ChatGPT Bot (xeasy.me)</a></p>
<p>数据源四</p>
<p><a target="_blank" rel="noopener" href="https://chat.extkj.cn/">Chat机器人 (extkj.cn)</a></p>
<p><a target="_blank" rel="noopener" href="https://mirrorchat.extkj.cn/">Chat机器人 (extkj.cn)</a></p>
<p>相关推荐</p>
<blockquote>
<p><a target="_blank" rel="noopener" href="https://www.cnblogs.com/an-shiguang/p/17308296.html">玩转ChatGPT</a></p>
</blockquote>
 
      <!-- reward -->
      
    </div>
    

    <!-- copyright -->
    
    <footer class="article-footer">
       
  <ul class="article-tag-list" itemprop="keywords"><li class="article-tag-list-item"><a class="article-tag-list-link" href="/tags/ChatGPT/" rel="tag">ChatGPT</a></li></ul>

    </footer>
  </div>

    
 
   
  
</article>

    
    <article
  id="post-实用工具推荐"
  class="article article-type-post"
  itemscope
  itemprop="blogPost"
  data-scroll-reveal
>
  <div class="article-inner">
    
    <header class="article-header">
       
<h2 itemprop="name">
  <a class="article-title" href="/2023/05/06/%E5%AE%9E%E7%94%A8%E5%B7%A5%E5%85%B7%E6%8E%A8%E8%8D%90/"
    >实用工具推荐</a> 
</h2>
 

      
    </header>
     
    <div class="article-meta">
      <a href="/2023/05/06/%E5%AE%9E%E7%94%A8%E5%B7%A5%E5%85%B7%E6%8E%A8%E8%8D%90/" class="article-date">
  <time datetime="2023-05-06T05:51:08.000Z" itemprop="datePublished">2023-05-06</time>
</a> 
  <div class="article-category">
    <a class="article-category-link" href="/categories/%E5%B7%A5%E5%85%B7%E7%AE%B1/">工具箱</a>
  </div>
   
    </div>
      
    <div class="article-entry" itemprop="articleBody">
       
  <h1 id="一、实用软件"><a href="#一、实用软件" class="headerlink" title="一、实用软件"></a>一、实用软件</h1><h2 id="系统安全"><a href="#系统安全" class="headerlink" title="系统安全"></a>系统安全</h2><p>1、<a target="_blank" rel="noopener" href="https://www.huorong.cn/">火绒</a></p>
<p>系统安全用它就够了,市面上有很多电脑管家软件,还是火绒用起来最舒服</p>
<p>火绒安全工具里有跟多使用的工具，系统修复、弹窗拦截、右键管理、启动项管理等</p>
<p><img src="https://s1.vika.cn/space/2023/03/20/85e64bc7ca634b02a5f6f180fe06889d" alt="image-20230319122938446"></p>
<p>其中我最喜欢的是弹窗拦截功能，它能自动拦截弹窗广告，对于个别无法识别的弹窗广告也能手动截图识别</p>
<p><img src="https://s1.vika.cn/space/2023/03/20/d088eb0e2e00485da5b9ae2c7a473b5a" alt="image-20230319123220860"></p>
<h2 id="日常办公"><a href="#日常办公" class="headerlink" title="日常办公"></a>日常办公</h2><p>1、Office</p>
<blockquote>
<p><a target="_blank" rel="noopener" href="https://pan.baidu.com/s/11c3mjaTfwCgpIpLzs2dsGg?pwd=8pdf">office 2013-2019激活工具 </a></p>
<p>[Windows数字激活工具](链接：<a target="_blank" rel="noopener" href="https://pan.baidu.com/s/1_hNfAWxaSP0Me_bYjqtA_Q?pwd=g0f8">https://pan.baidu.com/s/1_hNfAWxaSP0Me_bYjqtA_Q?pwd=g0f8</a><br>提取码：g0f8)</p>
<p><a target="_blank" rel="noopener" href="https://pan.baidu.com/s/1DMcxfrzRFhNLtsK0PAcdxw?pwd=x704">KMS</a></p>
</blockquote>
<p>2、<a target="_blank" rel="noopener" href="https://www.u.tools/">uTools</a></p>
<p>3、<a target="_blank" rel="noopener" href="https://getquicker.net/">Quicker</a></p>
<h2 id="浏览器"><a href="#浏览器" class="headerlink" title="浏览器"></a>浏览器</h2><h2 id="1、Chrome-浏览器"><a href="#1、Chrome-浏览器" class="headerlink" title="1、Chrome 浏览器"></a><strong>1、Chrome 浏览器</strong></h2><blockquote>
<p><a target="_blank" rel="noopener" href="https://zhuanlan.zhihu.com/p/438998185">谷歌chrome浏览器最新版国内下载方法</a></p>
<p><a target="_blank" rel="noopener" href="http://www.th-sjy.com/?p=4995">Google Chrome 浏览器<a target="_blank" rel="noopener" href="http://www.th-sjy.com/?p=4995">官方中文稳定版&#x2F;中文绿色便携稳定共存版</a></a></p>
</blockquote>
<h2 id="2、chrome-拓展"><a href="#2、chrome-拓展" class="headerlink" title="2、chrome 拓展"></a><strong>2、chrome 拓展</strong></h2><h3 id="如何下载"><a href="#如何下载" class="headerlink" title="如何下载"></a><strong>如何下载</strong></h3><ol>
<li><a target="_blank" rel="noopener" href="https://chrome.zzzmh.cn/#/index">极简插件</a> </li>
<li><a target="_blank" rel="noopener" href="https://chrome.google.com/webstore/category/extensions?hl=zh-CN">chrome应用商店(需要魔法)</a></li>
</ol>
<h3 id="如何安装"><a href="#如何安装" class="headerlink" title="如何安装"></a><strong>如何安装</strong></h3><p>在浏览器地址栏输入 <code>chrome://extensions/</code>  进入拓展程序管理界面，开启开发者模式</p>
<p><img src="https://s1.vika.cn/space/2023/03/20/388c8e5b4f254199b061e89b3bb3d7f6" alt="image-20230216130154572"></p>
<p>将下载好的扩展文件解压后会得到后缀名为 <code>.crx</code> 的文件，直接拖入到刚才打开的管理界面中即可</p>
<p><img src="https://s1.vika.cn/space/2023/03/20/bf2e139e9b5242ffa51fd4dca24c63a7" alt="image-20230204150013216"></p>
<p>Edge浏览器可以在浏览器访问 <code>edge://extensions/</code> 或者在菜单栏找到拓展管理界面</p>
<p><img src="https://img2023.cnblogs.com/blog/2233039/202305/2233039-20230508130544007-245543186.png" alt="image-20230508130542710"></p>
<p>可以管理当前已只能装的拓展或者获取新的拓展</p>
<p><img src="https://img2023.cnblogs.com/blog/2233039/202305/2233039-20230508130649366-1604706194.png" alt="image-20230508130649138"></p>
<p>可以直接搜索自己需要的拓展</p>
<p><img src="https://img2023.cnblogs.com/blog/2233039/202305/2233039-20230508130743963-428018338.png" alt="image-20230508130743659"></p>
<h3 id="脚本推荐"><a href="#脚本推荐" class="headerlink" title="脚本推荐"></a>脚本推荐</h3><p>1、<a target="_blank" rel="noopener" href="https://chrome.zzzmh.cn/info/dhdgffkkebhmkfjojejmpbldmpobfkfo"><strong>Tampermonkey 油猴脚本</strong></a> &#x2F; <a target="_blank" rel="noopener" href="https://chrome.zzzmh.cn/info/gcalenpjmijncebpfijmoaglllgpjagf"><strong>Tampermonkey Beta 油猴脚本</strong></a></p>
<p>可谓拓展之王，必备的一款拓展，该拓展可以安装浏览器插件，</p>
<p>可以实现 <a target="_blank" rel="noopener" href="https://greasyfork.org/zh-CN/scripts/436446-%E7%BD%91%E7%9B%98%E7%9B%B4%E9%93%BE%E4%B8%8B%E8%BD%BD%E5%8A%A9%E6%89%8B">网盘直链下载</a>、 <a target="_blank" rel="noopener" href="https://greasyfork.org/zh-CN/scripts/370634-%E6%87%92%E4%BA%BA%E4%B8%93%E7%94%A8-%E5%85%A8%E7%BD%91vip%E8%A7%86%E9%A2%91%E5%85%8D%E8%B4%B9%E7%A0%B4%E8%A7%A3%E5%8E%BB%E5%B9%BF%E5%91%8A-%E5%85%A8%E7%BD%91%E9%9F%B3%E4%B9%90%E7%9B%B4%E6%8E%A5%E4%B8%8B%E8%BD%BD-%E7%9F%A5%E4%B9%8E%E5%A2%9E%E5%BC%BA-%E7%9F%AD%E8%A7%86%E9%A2%91%E6%97%A0%E6%B0%B4%E5%8D%B0%E4%B8%8B%E8%BD%BD-%E7%99%BE%E5%BA%A6%E7%BD%91%E7%9B%98%E7%9B%B4%E6%8E%A5%E4%B8%8B%E8%BD%BD%E7%AD%89%E5%A4%9A%E5%8A%9F%E8%83%BD%E5%B7%A5%E5%85%B7%E7%AE%B1-%E5%8A%9F%E8%83%BD%E5%8F%AF%E7%8B%AC%E7%AB%8B%E5%BC%80%E5%85%B3-%E9%95%BF%E6%9C%9F%E6%9B%B4%E6%96%B0-%E6%94%BE%E5%BF%83%E4%BD%BF%E7%94%A8-v6">VIP影视在线解析</a> 、<a target="_blank" rel="noopener" href="https://greasyfork.org/zh-CN/scripts/444498-wenku-doc-download-%E7%99%BE%E5%BA%A6%E6%96%87%E5%BA%93wenku%E5%8A%A0%E5%BC%BA%E7%A0%B4%E8%A7%A3%E7%89%88-%E7%99%BE%E5%BA%A6%E6%96%87%E5%BA%93%E4%BC%9A%E5%91%98%E5%85%8D%E8%B4%B9%E8%A7%A3%E6%9E%90%E4%B8%8B%E8%BD%BD-%E7%99%BE%E5%BA%A6%E6%96%87%E5%BA%93%E6%96%87%E6%A1%A3%E4%B8%8B%E8%BD%BD%E5%92%8C%E5%A4%8D%E5%88%B6%E5%86%85%E5%AE%B9-%E6%96%87%E6%9C%AC%E9%80%89%E4%B8%AD%E5%A4%8D%E5%88%B6-%E7%99%BE%E5%BA%A6%E6%96%87%E5%BA%93%E4%B8%8B%E8%BD%BD%E5%99%A8-vip%E6%96%87%E6%A1%A3%E5%85%8D%E8%B4%B9%E4%B8%8B%E8%BD%BD-%E5%85%A8%E6%96%87%E9%98%85%E8%AF%BB-%E5%BC%80%E5%90%AF%E5%8F%B3%E9%94%AE%E5%A4%8D%E5%88%B6">解除复制功能限制</a>、 <a target="_blank" rel="noopener" href="https://greasyfork.org/zh-CN/scripts/14178-ac-baidu-%E9%87%8D%E5%AE%9A%E5%90%91%E4%BC%98%E5%8C%96%E7%99%BE%E5%BA%A6%E6%90%9C%E7%8B%97%E8%B0%B7%E6%AD%8C%E5%BF%85%E5%BA%94%E6%90%9C%E7%B4%A2-favicon-%E5%8F%8C%E5%88%97">优化百度搜狗谷歌必应搜索</a> 等功能</p>
<p>可以在 <a target="_blank" rel="noopener" href="https://greasyfork.org/zh-CN/">Greasy Fork</a> 获取脚本</p>
<p>2、<a target="_blank" rel="noopener" href="https://chrome.zzzmh.cn/info/ngpampappnmepgilojfohadhhmbhlaek">IDM Integration Module</a></p>
<p>3、<a target="_blank" rel="noopener" href="https://chrome.zzzmh.cn/info/cfhdojbkjhnklbpkdaibdccddilifddb">Adblock Plus 广告拦截</a></p>
<p>4、<a target="_blank" rel="noopener" href="https://chrome.zzzmh.cn/info/cdonnmffkdaoajfknoeeecmchibpmkmg">Saladict 沙拉查词</a></p>
<p>5、<a target="_blank" rel="noopener" href="https://chrome.zzzmh.cn/info/opjjpmhoiojifppkkcdabiobhakljdgm">Online Download Manager 下载管理</a></p>
<p>6、<a target="_blank" rel="noopener" href="https://chrome.zzzmh.cn/info/necpbmbhhdiplmfhmjicabdeighkndkn">Similar Sites 相似网站</a></p>
<p>7、<a target="_blank" rel="noopener" href="https://chrome.zzzmh.cn/info/mhloojimgilafopcmlcikiidgbbnelip">iTab新标签页</a></p>
<p>8、<a target="_blank" rel="noopener" href="https://chrome.zzzmh.cn/info/aikflfpejipbpjdlfabpgclhblkpaafo">Wetab 新标签页</a></p>
<h2 id="下载工具"><a href="#下载工具" class="headerlink" title="下载工具"></a>下载工具</h2><p>1、IDM</p>
<blockquote>
<p><a target="_blank" rel="noopener" href="https://pan.baidu.com/s/1OVf7r3jzHVx0j4VKUKBSwg?pwd=8m5w">IDM官方安装包破解工具</a></p>
</blockquote>
<h2 id="播放器"><a href="#播放器" class="headerlink" title="播放器"></a>播放器</h2><p><strong>1、potplayer</strong></p>
<blockquote>
<p><a target="_blank" rel="noopener" href="https://www.cnblogs.com/an-shiguang/p/16152942.html">Potplayer 优化设置</a></p>
</blockquote>
<h2 id="文本阅读器"><a href="#文本阅读器" class="headerlink" title="文本阅读器"></a>文本阅读器</h2><p>1、<a target="_blank" rel="noopener" href="https://gitee.com/cxasm/notepad--">Notepad–</a></p>
<p>2、<a target="_blank" rel="noopener" href="http://www.sublimetext.com/3">sublimetext</a></p>
<blockquote>
<p><a target="_blank" rel="noopener" href="https://www.bilibili.com/video/BV1sy4y1774E">Sublime Text 3 安装_配置_汉化插件_20210914</a></p>
<p><a target="_blank" rel="noopener" href="https://wwa.lanzoui.com/ibTkGtzys9a">Sublime Text教程文件</a></p>
</blockquote>
<p>3、<a target="_blank" rel="noopener" href="https://www.ultraedit.com/">UltraEdit</a></p>
<p>支持超大文本阅读</p>
<blockquote>
<p><a target="_blank" rel="noopener" href="https://pan.baidu.com/s/1lwA97gi_kUMzrNtPzaPk-A?pwd=40k9">UltraEdit工具</a></p>
<p><a target="_blank" rel="noopener" href="https://blog.csdn.net/weixin_45230720/article/details/126695298">UltraEdit编辑器+注册机（windows版）</a></p>
</blockquote>
<h2 id="压缩工具"><a href="#压缩工具" class="headerlink" title="压缩工具"></a>压缩工具</h2><p>1、<a target="_blank" rel="noopener" href="https://www.bandisoft.com/bandizip/">Bandzip</a></p>
<p>2、<a target="_blank" rel="noopener" href="https://7-zip.org/">7ZIP</a></p>
<h2 id="截图工具"><a href="#截图工具" class="headerlink" title="截图工具"></a>截图工具</h2><p>1、<a target="_blank" rel="noopener" href="https://verycapture.com/cn/index.html">VeryCaptuer</a></p>
<p>一个非常实用的截图，录屏工具，支持钉图，长截图，录制GIF，录制视频，自定义快捷键，用它一个就够了</p>
<p><img src="https://img2023.cnblogs.com/blog/2233039/202305/2233039-20230508113439661-1165203934.png" alt="image-20230508113439344"></p>
<p>2、<a target="_blank" rel="noopener" href="https://zh.snipaste.com/">Snipaste</a></p>
<p>最喜欢该软件的贴图功能，可以将截图钉在屏幕上</p>
<p>3、<a target="_blank" rel="noopener" href="https://faststone-capture.en.softonic.com/">FSCapture</a></p>
<blockquote>
<p><a target="_blank" rel="noopener" href="https://pan.baidu.com/s/1fMdwSe1-xreONjTRbjNZYQ?pwd=sfjf">电脑滚动截屏软件</a></p>
</blockquote>
<p>小巧轻便、具有滚动截屏功能，不仅是个截图工具还能录屏</p>
<p><strong>注册码</strong></p>
<p>用户名：bluman</p>
<p>注册码：VPISCJULXUFGDDXYAUYF</p>
<p><img src="https://s1.vika.cn/space/2023/03/20/3e42b948ae084400b74a69edab062f08" alt="image-20230319135131138"></p>
<h2 id="卸载工具"><a href="#卸载工具" class="headerlink" title="卸载工具"></a>卸载工具</h2><p>1、<a target="_blank" rel="noopener" href="https://geekuninstaller.com/">Geek</a></p>
<h2 id="录屏工具"><a href="#录屏工具" class="headerlink" title="录屏工具"></a>录屏工具</h2><p>1、<a target="_blank" rel="noopener" href="https://www.apowersoft.com/">ApowerREC</a></p>
<blockquote>
<p><a target="_blank" rel="noopener" href="https://pan.baidu.com/s/1fvHo_zlrjvdWbxels91cbQ?pwd=lnzg">ApowerREC 1.4.2.21-录屏工具</a></p>
</blockquote>
<p>2、<a target="_blank" rel="noopener" href="https://verycapture.com/cn/index.html">VeryCaptuer</a></p>
<p>3、<a target="_blank" rel="noopener" href="https://faststone-capture.en.softonic.com/">FSCapture</a></p>
<p>4、<a href="cockos.com/licecap/">LICEcap</a></p>
<p>一款轻量级屏幕录制工具，可以导出GIF动画图片格式，支持导出GIF 动画图片格式，可灵活调整录制窗口大小。</p>
<blockquote>
<p><a target="_blank" rel="noopener" href="https://blog.csdn.net/Captain_ldx/article/details/127170606">「实用工具—LICEcap」写博必备|动图制作|一键生成gif(GIF)</a></p>
</blockquote>
<h2 id="笔记工具"><a href="#笔记工具" class="headerlink" title="笔记工具"></a>笔记工具</h2><p>1、<a target="_blank" rel="noopener" href="https://www.typora.net/">Typora</a></p>
<blockquote>
<p><a target="_blank" rel="noopener" href="https://pan.baidu.com/s/10dpJnejLJv89OzCagHHL6w?pwd=klu2">Typora免费版本</a></p>
</blockquote>
<h2 id="开发工具"><a href="#开发工具" class="headerlink" title="开发工具"></a>开发工具</h2><p>1、 <a target="_blank" rel="noopener" href="https://mobaxterm.mobatek.net/">MobaXterm</a></p>
<p>一款非常实用的SSH远程软件，支持的功能很多，自带ftp传输工具，可以支持文件拖拽传输</p>
<p><img src="https://img2023.cnblogs.com/blog/2233039/202305/2233039-20230508113930955-477982934.png" alt="image-20230508113930861"></p>
<p>界面也很舒服，而且可以监控服务器cpu，内存等资源实用状态</p>
<p><img src="https://img2023.cnblogs.com/blog/2233039/202305/2233039-20230508113831729-317372585.png" alt="image-20230508113831481"></p>
<p>2、<a target="_blank" rel="noopener" href="https://www.cursor.so/">Cursor</a></p>
<p>可以免注册免登录，不需要魔法使用ChatGPT3.5接口生成代码，检查bug等</p>
<blockquote>
<p><a target="_blank" rel="noopener" href="http://www.dtmao.cc/ios/69182.html">Cursor：一个集成GPT-4的IDE开发工具</a></p>
</blockquote>
<p>3、<a target="_blank" rel="noopener" href="https://github.com/java-decompiler/jd-gui/releases">jd-gui</a></p>
<p>一款小巧轻便的java反编译工具，支持对整个目录内的文件进行反编译，并且还原度很高</p>
<p>4、<a target="_blank" rel="noopener" href="https://www.shenzhuohl.com/">神卓互联</a></p>
<p>内网穿透工具，上手简单，服务较稳定</p>
 
      <!-- reward -->
      
    </div>
    

    <!-- copyright -->
    
    <footer class="article-footer">
       
    </footer>
  </div>

    
 
   
  
</article>

    
  </article>
  

  
  <nav class="page-nav">
    
    <a class="extend prev" rel="prev" href="/page/3/">上一页</a><a class="page-number" href="/">1</a><a class="page-number" href="/page/2/">2</a><a class="page-number" href="/page/3/">3</a><span class="page-number current">4</span><a class="page-number" href="/page/5/">5</a><a class="page-number" href="/page/6/">6</a><span class="space">&hellip;</span><a class="page-number" href="/page/8/">8</a><a class="extend next" rel="next" href="/page/5/">下一页</a>
  </nav>
  
</section>
</div>

      <footer class="footer">
  <div class="outer">
    <ul>
      <li>
        Copyrights &copy;
        2023
        <i class="ri-heart-fill heart_icon"></i> Shiguang
      </li>
    </ul>
    <ul>
      <li>
        
      </li>
    </ul>
    <ul>
      <li>
        
        
        <span>
  <span><i class="ri-user-3-fill"></i>Visitors:<span id="busuanzi_value_site_uv"></span></span>
  <span class="division">|</span>
  <span><i class="ri-eye-fill"></i>Views:<span id="busuanzi_value_page_pv"></span></span>
</span>
        
      </li>
    </ul>
    <ul>
      
    </ul>
    <ul>
      
    </ul>
    <ul>
      <li>
        <!-- cnzz统计 -->
        
        <script type="text/javascript" src='https://s9.cnzz.com/z_stat.php?id=1278069914&amp;web_id=1278069914'></script>
        
      </li>
    </ul>
  </div>
</footer>    
    </main>
    <div class="float_btns">
      <div class="totop" id="totop">
  <i class="ri-arrow-up-line"></i>
</div>

<div class="todark" id="todark">
  <i class="ri-moon-line"></i>
</div>

    </div>
    <aside class="sidebar on">
      <button class="navbar-toggle"></button>
<nav class="navbar">
  
  <div class="logo">
    <a href="/"><img src="/images/ayer-side.svg" alt="時光"></a>
  </div>
  
  <ul class="nav nav-main">
    
    <li class="nav-item">
      <a class="nav-item-link" href="/">主页</a>
    </li>
    
    <li class="nav-item">
      <a class="nav-item-link" href="/archives">归档</a>
    </li>
    
    <li class="nav-item">
      <a class="nav-item-link" href="/categories">分类</a>
    </li>
    
    <li class="nav-item">
      <a class="nav-item-link" href="/tags">标签</a>
    </li>
    
    <li class="nav-item">
      <a class="nav-item-link" href="/friends">友链</a>
    </li>
    
  </ul>
</nav>
<nav class="navbar navbar-bottom">
  <ul class="nav">
    <li class="nav-item">
      
      <a class="nav-item-link nav-item-search"  title="Search">
        <i class="ri-search-line"></i>
      </a>
      
      
      <a class="nav-item-link" target="_blank" href="/atom.xml" title="RSS Feed">
        <i class="ri-rss-line"></i>
      </a>
      
    </li>
  </ul>
</nav>
<div class="search-form-wrap">
  <div class="local-search local-search-plugin">
  <input type="search" id="local-search-input" class="local-search-input" placeholder="Search...">
  <div id="local-search-result" class="local-search-result"></div>
</div>
</div>
    </aside>
    <div id="mask"></div>

<!-- #reward -->
<div id="reward">
  <span class="close"><i class="ri-close-line"></i></span>
  <p class="reward-p"><i class="ri-cup-line"></i>请我喝杯咖啡吧~</p>
  <div class="reward-box">
    
    <div class="reward-item">
      <img class="reward-img" src="/images/alipay.jpg">
      <span class="reward-type">支付宝</span>
    </div>
    
    
    <div class="reward-item">
      <img class="reward-img" src="/images/wechat.jpg">
      <span class="reward-type">微信</span>
    </div>
    
  </div>
</div>
    
<script src="/js/jquery-3.6.0.min.js"></script>
 
<script src="/js/lazyload.min.js"></script>

<!-- Tocbot -->

<script src="https://cdn.staticfile.org/jquery-modal/0.9.2/jquery.modal.min.js"></script>
<link
  rel="stylesheet"
  href="https://cdn.staticfile.org/jquery-modal/0.9.2/jquery.modal.min.css"
/>
<script src="https://cdn.staticfile.org/justifiedGallery/3.8.1/js/jquery.justifiedGallery.min.js"></script>

<script src="/dist/main.js"></script>

<!-- ImageViewer -->
 <!-- Root element of PhotoSwipe. Must have class pswp. -->
<div class="pswp" tabindex="-1" role="dialog" aria-hidden="true">

    <!-- Background of PhotoSwipe. 
         It's a separate element as animating opacity is faster than rgba(). -->
    <div class="pswp__bg"></div>

    <!-- Slides wrapper with overflow:hidden. -->
    <div class="pswp__scroll-wrap">

        <!-- Container that holds slides. 
            PhotoSwipe keeps only 3 of them in the DOM to save memory.
            Don't modify these 3 pswp__item elements, data is added later on. -->
        <div class="pswp__container">
            <div class="pswp__item"></div>
            <div class="pswp__item"></div>
            <div class="pswp__item"></div>
        </div>

        <!-- Default (PhotoSwipeUI_Default) interface on top of sliding area. Can be changed. -->
        <div class="pswp__ui pswp__ui--hidden">

            <div class="pswp__top-bar">

                <!--  Controls are self-explanatory. Order can be changed. -->

                <div class="pswp__counter"></div>

                <button class="pswp__button pswp__button--close" title="Close (Esc)"></button>

                <button class="pswp__button pswp__button--share" style="display:none" title="Share"></button>

                <button class="pswp__button pswp__button--fs" title="Toggle fullscreen"></button>

                <button class="pswp__button pswp__button--zoom" title="Zoom in/out"></button>

                <!-- Preloader demo http://codepen.io/dimsemenov/pen/yyBWoR -->
                <!-- element will get class pswp__preloader--active when preloader is running -->
                <div class="pswp__preloader">
                    <div class="pswp__preloader__icn">
                        <div class="pswp__preloader__cut">
                            <div class="pswp__preloader__donut"></div>
                        </div>
                    </div>
                </div>
            </div>

            <div class="pswp__share-modal pswp__share-modal--hidden pswp__single-tap">
                <div class="pswp__share-tooltip"></div>
            </div>

            <button class="pswp__button pswp__button--arrow--left" title="Previous (arrow left)">
            </button>

            <button class="pswp__button pswp__button--arrow--right" title="Next (arrow right)">
            </button>

            <div class="pswp__caption">
                <div class="pswp__caption__center"></div>
            </div>

        </div>

    </div>

</div>

<link rel="stylesheet" href="https://cdn.staticfile.org/photoswipe/4.1.3/photoswipe.min.css">
<link rel="stylesheet" href="https://cdn.staticfile.org/photoswipe/4.1.3/default-skin/default-skin.min.css">
<script src="https://cdn.staticfile.org/photoswipe/4.1.3/photoswipe.min.js"></script>
<script src="https://cdn.staticfile.org/photoswipe/4.1.3/photoswipe-ui-default.min.js"></script>

<script>
    function viewer_init() {
        let pswpElement = document.querySelectorAll('.pswp')[0];
        let $imgArr = document.querySelectorAll(('.article-entry img:not(.reward-img)'))

        $imgArr.forEach(($em, i) => {
            $em.onclick = () => {
                // slider展开状态
                // todo: 这样不好，后面改成状态
                if (document.querySelector('.left-col.show')) return
                let items = []
                $imgArr.forEach(($em2, i2) => {
                    let img = $em2.getAttribute('data-idx', i2)
                    let src = $em2.getAttribute('data-target') || $em2.getAttribute('src')
                    let title = $em2.getAttribute('alt')
                    // 获得原图尺寸
                    const image = new Image()
                    image.src = src
                    items.push({
                        src: src,
                        w: image.width || $em2.width,
                        h: image.height || $em2.height,
                        title: title
                    })
                })
                var gallery = new PhotoSwipe(pswpElement, PhotoSwipeUI_Default, items, {
                    index: parseInt(i)
                });
                gallery.init()
            }
        })
    }
    viewer_init()
</script> 
<!-- MathJax -->

<!-- Katex -->

<!-- busuanzi  -->
 
<script src="/js/busuanzi-2.3.pure.min.js"></script>
 
<!-- ClickLove -->

<!-- ClickBoom1 -->

<!-- ClickBoom2 -->

<!-- CodeCopy -->
 
<link rel="stylesheet" href="/css/clipboard.css">
 <script src="https://cdn.staticfile.org/clipboard.js/2.0.10/clipboard.min.js"></script>
<script>
  function wait(callback, seconds) {
    var timelag = null;
    timelag = window.setTimeout(callback, seconds);
  }
  !function (e, t, a) {
    var initCopyCode = function(){
      var copyHtml = '';
      copyHtml += '<button class="btn-copy" data-clipboard-snippet="">';
      copyHtml += '<i class="ri-file-copy-2-line"></i><span>COPY</span>';
      copyHtml += '</button>';
      $(".highlight .code pre").before(copyHtml);
      $(".article pre code").before(copyHtml);
      var clipboard = new ClipboardJS('.btn-copy', {
        target: function(trigger) {
          return trigger.nextElementSibling;
        }
      });
      clipboard.on('success', function(e) {
        let $btn = $(e.trigger);
        $btn.addClass('copied');
        let $icon = $($btn.find('i'));
        $icon.removeClass('ri-file-copy-2-line');
        $icon.addClass('ri-checkbox-circle-line');
        let $span = $($btn.find('span'));
        $span[0].innerText = 'COPIED';
        
        wait(function () { // 等待两秒钟后恢复
          $icon.removeClass('ri-checkbox-circle-line');
          $icon.addClass('ri-file-copy-2-line');
          $span[0].innerText = 'COPY';
        }, 2000);
      });
      clipboard.on('error', function(e) {
        e.clearSelection();
        let $btn = $(e.trigger);
        $btn.addClass('copy-failed');
        let $icon = $($btn.find('i'));
        $icon.removeClass('ri-file-copy-2-line');
        $icon.addClass('ri-time-line');
        let $span = $($btn.find('span'));
        $span[0].innerText = 'COPY FAILED';
        
        wait(function () { // 等待两秒钟后恢复
          $icon.removeClass('ri-time-line');
          $icon.addClass('ri-file-copy-2-line');
          $span[0].innerText = 'COPY';
        }, 2000);
      });
    }
    initCopyCode();
  }(window, document);
</script>
 
<!-- CanvasBackground -->

<script>
  if (window.mermaid) {
    mermaid.initialize({ theme: "forest" });
  }
</script>


    
    

  </div>
</body>

</html>